﻿using Modules.Project;
using System.ComponentModel.DataAnnotations;

namespace ManagementApi.Models.Manage.ProjectSecurityDepositRecords
{
    public class ProjectSecurityDepositRecordsEditForm
    {
        /// <summary>
        /// 主键 
        ///</summary>
        [Display(Name = "主键")]
        public int? Id { get; set; }
        /// <summary>
        /// 保证金账户id 
        ///</summary>
        [Display(Name = "保证金账户id")]
        [Required(ErrorMessage = "{0}不能为空")]
        public int SecurityDepositId { get; set; }
        public string? SerialNumber { get; set; }
        /// <summary>
        /// 收支编号 
        ///</summary>
        [Display(Name = "收支编号")]
        [Required(ErrorMessage = "{0}不能为空")]
        public string Code { get; set; }
        /// <summary>
        /// 项目id 
        ///</summary>
        [Display(Name = "项目id")]
        public int? ProjectId { get; set; }
        /// <summary>
        /// 收支类型(进账,出账) 
        ///</summary>
        [Display(Name = "收支类型")]
        [Required(ErrorMessage = "{0}不能为空")]
        public 收支类型 IncomeType { get; set; }
        /// <summary>
        /// 交易类型(资金入账,代发工资,计息,手续费,其他) 
        ///</summary>
        [Display(Name = "交易类型")]
        [Required(ErrorMessage = "{0}不能为空")]
        public 交易类型 TradingType { get; set; }
        /// <summary>
        /// 缴存类型(按预设比例缴存,免除保证金,减少保证金应交金额,缓缴保证金,增加保证金应缴金额) 
        ///</summary>
        [Display(Name = "缴存类型")]
        [Required(ErrorMessage = "{0}不能为空")]
        public 缴存类型 DepositeType { get; set; }
        /// <summary>
        /// 缓存起始日期 
        ///</summary>
        [Display(Name = "缓存起始日期")]
        [Required(ErrorMessage = "{0}不能为空")]
        public DateTime DepositeStartDate { get; set; }
        /// <summary>
        /// 差异化缓存金额 
        ///</summary>
        [Display(Name = "差异化缓存金额")]
        [Required(ErrorMessage = "{0}不能为空")]
        public decimal DifferentiatedCacheAmount { get; set; }
        /// <summary>
        /// 收支方式(现金,银行保函,工程担保公司保函,工程保证保险,其它) 
        ///</summary>
        [Display(Name = "收支方式")]
        [Required(ErrorMessage = "{0}不能为空")]
        public 收支方式 IncomeWay { get; set; }
        /// <summary>
        /// 应缴金额 
        ///</summary>
        [Display(Name = "应缴金额")]
        [Required(ErrorMessage = "{0}不能为空")]
        public decimal? AmountPayable { get; set; }
        /// <summary>
        /// 已缴纳金额 
        ///</summary>
        [Display(Name = "已缴纳金额")]
        [Required(ErrorMessage = "{0}不能为空")]
        public decimal PaidAmount { get; set; }
        /// <summary>
        /// 工资保证金开户银行 
        ///</summary>
        [Display(Name = "工资保证金开户银行")]
        public string? BankName { get; set; }
        /// <summary>
        /// 工资保证金银行账号 
        ///</summary>
        [Display(Name = "工资保证金银行账号")]
        public string? BankNumber { get; set; }
        /// <summary>
        /// 现金金额 
        ///</summary>
        [Display(Name = "现金金额")]
        public decimal? CashAmount { get; set; }
        /// <summary>
        /// 担保银行名称 
        ///</summary>
        [Display(Name = "担保银行名称")]
        public string? GuaranteeBankName { get; set; }
        /// <summary>
        /// 银行保函涵号 
        ///</summary>
        [Display(Name = "银行保函涵号")]
        public string? BankGuaranteeNumber { get; set; }
        /// <summary>
        /// 银行保函担保金额 
        ///</summary>
        [Display(Name = "银行保函担保金额")]
        public string? BankGuaranteeAmount { get; set; }
        /// <summary>
        /// 银行保函有效期起始日期 
        ///</summary>
        [Display(Name = "银行保函有效期起始日期")]
        public DateTime? BankGuaranteeStartDate { get; set; }
        /// <summary>
        /// 银行保函有效期终止日期 
        ///</summary>
        [Display(Name = "银行保函有效期终止日期")]
        public DateTime? BankGuaranteeEndDate { get; set; }
        /// <summary>
        /// 工程担保公司名称 
        ///</summary>
        [Display(Name = "工程担保公司名称")]
        public string? GuaranteeCompanyName { get; set; }
        /// <summary>
        /// 工程担保公司保函涵号 
        ///</summary>
        [Display(Name = "工程担保公司保函涵号")]
        public string? GuaranteeCompanyNumber { get; set; }
        /// <summary>
        /// 工程担保公司担保金额 
        ///</summary>
        [Display(Name = "工程担保公司担保金额")]
        public DateTime? GuaranteeCompanyAmount { get; set; }
        /// <summary>
        /// 工程担保公司保函有效起始日期 
        ///</summary>
        [Display(Name = "工程担保公司保函有效起始日期")]
        public DateTime? GuaranteeCompanyStartDate { get; set; }
        /// <summary>
        /// 工程担保公司保函有效终止日期 
        ///</summary>
        [Display(Name = "工程担保公司保函有效终止日期")]
        public DateTime? GuaranteeCompanyEndDate { get; set; }
        /// <summary>
        /// 保险公司名称 
        ///</summary>
        [Display(Name = "保险公司名称")]
        public string? InsuranceCompanyName { get; set; }
        /// <summary>
        /// 保险单号 
        ///</summary>
        [Display(Name = "保险单号")]
        public string? InsuranceNumber { get; set; }
        /// <summary>
        /// 保单金额 
        ///</summary>
        [Display(Name = "保单金额")]
        public decimal? InsuranceAmount { get; set; }
        /// <summary>
        /// 保险有效期起始日期 
        ///</summary>
        [Display(Name = "保险有效期起始日期")]
        public DateTime? InsuranceStartDate { get; set; }
        /// <summary>
        /// 保险有效期终止日期 
        ///</summary>
        [Display(Name = "保险有效期终止日期")]
        public DateTime? InsuranceEndDate { get; set; }
        /// <summary>
        /// 其他金额 
        ///</summary>
        [Display(Name = "其他金额")]
        public string? OtherAmount { get; set; }
        /// <summary>
        /// 收支日期 
        ///</summary>
        [Display(Name = "收支日期")]
        public DateTime? RecordsDate { get; set; }
    }
}
